#include<iostream>
class Subject
{
public:
	virtual void request() = 0;
};
class RealSubject :public Subject
{
public:
	virtual void request()override
	{
		std::cout << "Read Subject : Handling Request" << std::endl;
	}
};
class Proxy :public Subject
{
private:
	RealSubject realsubject_;
public:
	void request()override
	{
		std::cout<<"Proxy: Performing additional operations before forwarding the request to Real Subject." << std::endl;
		realsubject_.request();
		std::cout << "Proxy: Performing additional operations after receiving the result from Real Subject." << std::endl;
	}
};
//int main()
//{
//	Proxy proxy;
//	proxy.request();
//
//	return 0;
//}